// 使用 function 声明一个对象(class-level)，它同时也是一个构造函数
function Panda( name , age ){
    // 使用 this. 方式绑定的属性属于实例(instance)的
    this.name = name ; // 这里的 "this" 可以理解为汉语中的 "我"
    // 使用 this 绑定的属性被称作 实例属性
    this.age = age ;

    // 使用 this 绑定的函数被称作 实例函数
    this.introduce = function(){
        console.log( '大家好，我是' + this.name +'，今年' + this.age +'岁了' );
    }
}

// 1、使用 new 关键字在 堆内存 中开辟空间
// 2、为 Panda对象(class-level) 中声明 实例属性 赋予相应的值
// 3、将 堆内存 中 创建好的 Panda实例 的 首地址 赋值给 引用变量 p
let p = new Panda( '团团' , 5 );
p.introduce();
p.name = '和和' ;
p.age = 6 ;
console.log( p.name , p.age );
p.introduce(); // 通过 引用变量.函数名() 来调用 实例函数

let a = new Panda( '圆圆' , 4 );
a.introduce();

// === 比较 两个变量中存储的 值 和 类型 是否相等
console.log( p === a ); // false
console.log( p.introduce === a.introduce ); // false